package models

import (
	"192.168.1.75/go-pkg/helper"
	"gorm.io/gorm"
)

// AlarmSetting 告警条件设置
// 这里仅包含离线的情况，其他的设备直接保存在机器上，后续考虑将机器的报警配置都保存在这里???
type AlarmSetting struct {
	ID        string `json:"id" gorm:"column:id;primaryKey;type:int;size:64;comment:主键"`
	RobotID   string `json:"robot_id" gorm:"column:robot_id;type:string;size:40;index:idx_robot_alarm,unique,priority:1;comment:机器人id"`
	AlarmType string `json:"alarm_type" gorm:"column:alarm_type;type:string;size:100;index:idx_robot_alarm,unique,priority:2;comment:告警类型"`
	Setting   string `json:"setting" gorm:"column:setting;type:string;size:1024;comment:告警设置"`
	CreatedAt int64  `json:"created_at" gorm:"autoCreateTime;column:created_at;type:int;size:64;comment:创建时间"`
	UpdatedAt int64  `json:"updated_at" gorm:"autoUpdateTime;column:updated_at;type:int;size:64;comment:更新时间"`
}

// TableName 表名
func (AlarmSetting) TableName() string {
	return "alarm_setting"
}

// BeforeCreate 自增id
func (a *AlarmSetting) BeforeCreate(tx *gorm.DB) (err error) {
	if a.ID != "" {
		return nil
	}
	// 用户id为空时，自动添加用户id
	uuid, err := helper.UUID{}.String()
	if err != nil {
		return err
	}
	a.ID = uuid
	return nil
}

// 模式自动注册
func init() {
	Models = append(Models, &AlarmSetting{})
}
